(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this);
(function(t){var e=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;if(typeof define==="function"&&define.amd){define(["underscore","jquery","exports"],function(i,r,n){e.Backbone=t(e,n,i,r)})}else if(typeof exports!=="undefined"){var i=require("underscore"),r;try{r=require("jquery")}catch(n){}t(e,exports,i,r)}else{e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}})(function(t,e,i,r){var n=t.Backbone;var s=Array.prototype.slice;e.VERSION="1.3.3";e.$=r;e.noConflict=function(){t.Backbone=n;return this};e.emulateHTTP=false;e.emulateJSON=false;var a=function(t,e,r){switch(t){case 1:return function(){return i[e](this[r])};case 2:return function(t){return i[e](this[r],t)};case 3:return function(t,n){return i[e](this[r],o(t,this),n)};case 4:return function(t,n,s){return i[e](this[r],o(t,this),n,s)};default:return function(){var t=s.call(arguments);t.unshift(this[r]);return i[e].apply(i,t)}}};var h=function(t,e,r){i.each(e,function(e,n){if(i[n])t.prototype[n]=a(e,n,r)})};var o=function(t,e){if(i.isFunction(t))return t;if(i.isObject(t)&&!e._isModel(t))return l(t);if(i.isString(t))return function(e){return e.get(t)};return t};var l=function(t){var e=i.matches(t);return function(t){return e(t.attributes)}};var u=e.Events={};var c=/\s+/;var f=function(t,e,r,n,s){var a=0,h;if(r&&typeof r==="object"){if(n!==void 0&&"context"in s&&s.context===void 0)s.context=n;for(h=i.keys(r);athis.length)n=this.length;if(n<0)n+=this.length+1;var s=[];var a=[];var h=[];var o=[];var l={};var u=e.add;var c=e.merge;var f=e.remove;var d=false;var v=this.comparator&&n==null&&e.sort!==false;var g=i.isString(this.comparator)?this.comparator:null;var p,m;for(m=0;m7);this._useHashChange=this._wantsHashChange&&this._hasHashChange;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.history&&this.history.pushState);this._usePushState=this._wantsPushState&&this._hasPushState;this.fragment=this.getFragment();this.root=("/"+this.root+"/").replace(O,"/");if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||"/";this.location.replace(e+"#"+this.getPath());return true}else if(this._hasPushState&&this.atRoot()){this.navigate(this.getHash(),{replace:true})}}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe");this.iframe.src="javascript:0";this.iframe.style.display="none";this.iframe.tabIndex=-1;var r=document.body;var n=r.insertBefore(this.iframe,r.firstChild).contentWindow;n.document.open();n.document.close();n.location.hash="#"+this.fragment}var s=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState){s("popstate",this.checkUrl,false)}else if(this._useHashChange&&!this.iframe){s("hashchange",this.checkUrl,false)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}if(!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};if(this._usePushState){t("popstate",this.checkUrl,false)}else if(this._useHashChange&&!this.iframe){t("hashchange",this.checkUrl,false)}if(this.iframe){document.body.removeChild(this.iframe);this.iframe=null}if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);N.started=false},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe){e=this.getHash(this.iframe.contentWindow)}if(e===this.fragment)return false;if(this.iframe)this.navigate(e);this.loadUrl()},loadUrl:function(t){if(!this.matchRoot())return false;t=this.fragment=this.getFragment(t);return i.some(this.handlers,function(e){if(e.route.test(t)){e.callback(t);return true}})},navigate:function(t,e){if(!N.started)return false;if(!e||e===true)e={trigger:!!e};t=this.getFragment(t||"");var i=this.root;if(t===""||t.charAt(0)==="?"){i=i.slice(0,-1)||"/"}var r=i+t;t=this.decodeFragment(t.replace(U,""));if(this.fragment===t)return;this.fragment=t;if(this._usePushState){this.history[e.replace?"replaceState":"pushState"]({},document.title,r)}else if(this._wantsHashChange){this._updateHash(this.location,t,e.replace);if(this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var n=this.iframe.contentWindow;if(!e.replace){n.document.open();n.document.close()}this._updateHash(n.location,t,e.replace)}}else{return this.location.assign(r)}if(e.trigger)return this.loadUrl(t)},_updateHash:function(t,e,i){if(i){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else{t.hash="#"+e}}});e.history=new N;var q=function(t,e){var r=this;var n;if(t&&i.has(t,"constructor")){n=t.constructor}else{n=function(){return r.apply(this,arguments)}}i.extend(n,r,e);n.prototype=i.create(r.prototype,t);n.prototype.constructor=n;n.__super__=r.prototype;return n};y.extend=x.extend=$.extend=k.extend=N.extend=q;var F=function(){throw new Error('A "url" property or function must be specified')};var B=function(t,e){var i=e.error;e.error=function(r){if(i)i.call(e.context,t,r,e);t.trigger("error",t,r,e)}};return e});
!function(a){function b(a){return a=b.buildAjaxOptions(a),b.transport(a)}var c=window.wpApiSettings;b.buildAjaxOptions=function(b){var d,e,f,g,h,i=b.url,j=b.path;if("string"==typeof b.namespace&&"string"==typeof b.endpoint&&(d=b.namespace.replace(/^\/|\/$/g,""),e=b.endpoint.replace(/^\//,""),j=e?d+"/"+e:d),"string"==typeof j&&(i=c.root+j.replace(/^\//,"")),g=!(b.data&&b.data._wpnonce),f=b.headers||{},g)for(h in f)if(f.hasOwnProperty(h)&&"x-wp-nonce"===h.toLowerCase()){g=!1;break}return g&&(f=a.extend({"X-WP-Nonce":c.nonce},f)),b=a.extend({},b,{headers:f,url:i}),delete b.path,delete b.namespace,delete b.endpoint,b},b.transport=a.ajax,window.wp=window.wp||{},window.wp.apiRequest=b}(jQuery);
!function(a,b){"use strict";function c(){this.models={},this.collections={},this.views={}}a.wp=a.wp||{},wp.api=wp.api||new c,wp.api.versionString=wp.api.versionString||"wp/v2/",!_.isFunction(_.includes)&&_.isFunction(_.contains)&&(_.includes=_.contains)}(window),function(a,b){"use strict";var c,d;a.wp=a.wp||{},wp.api=wp.api||{},wp.api.utils=wp.api.utils||{},wp.api.getModelByRoute=function(a){return _.find(wp.api.models,function(b){return b.prototype.route&&a===b.prototype.route.index})},wp.api.getCollectionByRoute=function(a){return _.find(wp.api.collections,function(b){return b.prototype.route&&a===b.prototype.route.index})},Date.prototype.toISOString||(c=function(a){return d=String(a),1===d.length&&(d="0"+d),d},Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+c(this.getUTCMonth()+1)+"-"+c(this.getUTCDate())+"T"+c(this.getUTCHours())+":"+c(this.getUTCMinutes())+":"+c(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1e3).toFixed(3)).slice(2,5)+"Z"}),wp.api.utils.parseISO8601=function(a){var c,d,e,f,g=0,h=[1,4,5,6,7,10,11];if(d=/^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(a)){for(e=0;f=h[e];++e)d[f]=+d[f]||0;d[2]=(+d[2]||1)-1,d[3]=+d[3]||1,"Z"!==d[8]&&b!==d[9]&&(g=60*d[10]+d[11],"+"===d[9]&&(g=0-g)),c=Date.UTC(d[1],d[2],d[3],d[4],d[5]+g,d[6],d[7])}else c=Date.parse?Date.parse(a):NaN;return c},wp.api.utils.getRootUrl=function(){return a.location.origin?a.location.origin+"/":a.location.protocol+"/"+a.location.host+"/"},wp.api.utils.capitalize=function(a){return _.isUndefined(a)?a:a.charAt(0).toUpperCase()+a.slice(1)},wp.api.utils.capitalizeAndCamelCaseDashes=function(a){return _.isUndefined(a)?a:(a=wp.api.utils.capitalize(a),wp.api.utils.camelCaseDashes(a))},wp.api.utils.camelCaseDashes=function(a){return a.replace(/-([a-z])/g,function(a){return a[1].toUpperCase()})},wp.api.utils.extractRoutePart=function(a,b,c,d){var e;return b=b||1,c=c||wp.api.versionString,0===a.indexOf("/"+c)&&(a=a.substr(c.length+1)),e=a.split("/"),d&&(e=e.reverse()),_.isUndefined(e[--b])?"":e[b]},wp.api.utils.extractParentName=function(a){var b,c=a.lastIndexOf("_id>[\\d]+)/");return c<0?"":(b=a.substr(0,c-1),b=b.split("/"),b.pop(),b=b.pop())},wp.api.utils.decorateFromRoute=function(a,b){_.each(a,function(a){_.includes(a.methods,"POST")||_.includes(a.methods,"PUT")?_.isEmpty(a.args)||(_.isEmpty(b.prototype.args)?b.prototype.args=a.args:b.prototype.args=_.extend(b.prototype.args,a.args)):_.includes(a.methods,"GET")&&(_.isEmpty(a.args)||(_.isEmpty(b.prototype.options)?b.prototype.options=a.args:b.prototype.options=_.extend(b.prototype.options,a.args)))})},wp.api.utils.addMixinsAndHelpers=function(a,b,c){var d=!1,e=["date","modified","date_gmt","modified_gmt"],f={setDate:function(a,b){var c=b||"date";return!(_.indexOf(e,c)<0)&&void this.set(c,a.toISOString())},getDate:function(a){var b=a||"date",c=this.get(b);return!(_.indexOf(e,b)<0||_.isNull(c))&&new Date(wp.api.utils.parseISO8601(c))}},g=function(a,b,c,d,e){var f,g,h,i;return i=jQuery.Deferred(),g=a.get("_embedded")||{},_.isNumber(b)&&0!==b?(g[d]&&(h=_.findWhere(g[d],{id:b})),h||(h={id:b}),f=new wp.api.models[c](h),f.get(e)?i.resolve(f):f.fetch({success:function(a){i.resolve(a)},error:function(a,b){i.reject(b)}}),i.promise()):(i.reject(),i)},h=function(a,b,c,d){var e,f,g,h="",j="",k=jQuery.Deferred();return e=a.get("id"),f=a.get("_embedded")||{},_.isNumber(e)&&0!==e?(_.isUndefined(c)||_.isUndefined(f[c])?h={parent:e}:j=_.isUndefined(d)?f[c]:f[c][d],g=new wp.api.collections[b](j,h),_.isUndefined(g.models[0])?g.fetch({success:function(a){i(a,e),k.resolve(a)},error:function(a,b){k.reject(b)}}):(i(g,e),k.resolve(g)),k.promise()):(k.reject(),k)},i=function(a,b){_.each(a.models,function(a){a.set("parent_post",b)})},j={getMeta:function(a){var b=this.get("meta");return b[a]},getMetas:function(){return this.get("meta")},setMetas:function(a){var b=this.get("meta");_.extend(b,a),this.set("meta",b)},setMeta:function(a,b){var c=this.get("meta");c[a]=b,this.set("meta",c)}},k={getRevisions:function(){return h(this,"PostRevisions")}},l={getTags:function(){var a=this.get("tags"),b=new wp.api.collections.Tags;return _.isEmpty(a)?jQuery.Deferred().resolve([]):b.fetch({data:{include:a}})},setTags:function(a){var b,c,d=this,e=[];return!_.isString(a)&&void(_.isArray(a)?(b=new wp.api.collections.Tags,b.fetch({data:{per_page:100},success:function(b){_.each(a,function(a){c=new wp.api.models.Tag(b.findWhere({slug:a})),c.set("parent_post",d.get("id")),e.push(c)}),a=new wp.api.collections.Tags(e),d.setTagsWithCollection(a)}})):this.setTagsWithCollection(a))},setTagsWithCollection:function(a){return this.set("tags",a.pluck("id")),this.save()}},m={getCategories:function(){var a=this.get("categories"),b=new wp.api.collections.Categories;return _.isEmpty(a)?jQuery.Deferred().resolve([]):b.fetch({data:{include:a}})},setCategories:function(a){var b,c,d=this,e=[];return!_.isString(a)&&void(_.isArray(a)?(b=new wp.api.collections.Categories,b.fetch({data:{per_page:100},success:function(b){_.each(a,function(a){c=new wp.api.models.Category(b.findWhere({slug:a})),c.set("parent_post",d.get("id")),e.push(c)}),a=new wp.api.collections.Categories(e),d.setCategoriesWithCollection(a)}})):this.setCategoriesWithCollection(a))},setCategoriesWithCollection:function(a){return this.set("categories",a.pluck("id")),this.save()}},n={getAuthorUser:function(){return g(this,this.get("author"),"User","author","name")}},o={getFeaturedMedia:function(){return g(this,this.get("featured_media"),"Media","wp:featuredmedia","source_url")}};return _.isUndefined(a.prototype.args)?a:(_.each(e,function(b){_.isUndefined(a.prototype.args[b])||(d=!0)}),d&&(a=a.extend(f)),_.isUndefined(a.prototype.args.author)||(a=a.extend(n)),_.isUndefined(a.prototype.args.featured_media)||(a=a.extend(o)),_.isUndefined(a.prototype.args.categories)||(a=a.extend(m)),_.isUndefined(a.prototype.args.meta)||(a=a.extend(j)),_.isUndefined(a.prototype.args.tags)||(a=a.extend(l)),_.isUndefined(c.collections[b+"Revisions"])||(a=a.extend(k)),a)}}(window),function(){"use strict";var a=window.wpApiSettings||{},b=["Comment","Media","Comment","Post","Page","Status","Taxonomy","Type"];wp.api.WPApiBaseModel=Backbone.Model.extend({initialize:function(){-1===_.indexOf(b,this.name)&&(this.requireForceForDelete=!0)},sync:function(a,b,c){var d;return c=c||{},_.isNull(b.get("date_gmt"))&&b.unset("date_gmt"),_.isEmpty(b.get("slug"))&&b.unset("slug"),_.isFunction(b.nonce)&&!_.isEmpty(b.nonce())&&(d=c.beforeSend,c.beforeSend=function(a){if(a.setRequestHeader("X-WP-Nonce",b.nonce()),d)return d.apply(this,arguments)},c.complete=function(a){var c=a.getResponseHeader("X-WP-Nonce");c&&_.isFunction(b.nonce)&&b.nonce()!==c&&b.endpointModel.set("nonce",c)}),this.requireForceForDelete&&"delete"===a&&(b.url=b.url()+"?force=true"),Backbone.sync(a,b,c)},save:function(a,b){return!(!_.includes(this.methods,"PUT")&&!_.includes(this.methods,"POST"))&&Backbone.Model.prototype.save.call(this,a,b)},destroy:function(a){return!!_.includes(this.methods,"DELETE")&&Backbone.Model.prototype.destroy.call(this,a)}}),wp.api.models.Schema=wp.api.WPApiBaseModel.extend({defaults:{_links:{},namespace:null,routes:{}},initialize:function(b,c){var d=this;c=c||{},wp.api.WPApiBaseModel.prototype.initialize.call(d,b,c),d.apiRoot=c.apiRoot||a.root,d.versionString=c.versionString||a.versionString},url:function(){return this.apiRoot+this.versionString}})}(),function(){"use strict";window.wpApiSettings||{};wp.api.WPApiBaseCollection=Backbone.Collection.extend({initialize:function(a,b){this.state={data:{},currentPage:null,totalPages:null,totalObjects:null},_.isUndefined(b)?this.parent="":this.parent=b.parent},sync:function(a,b,c){var d,e,f=this;return c=c||{},_.isFunction(b.nonce)&&!_.isEmpty(b.nonce())&&(d=c.beforeSend,c.beforeSend=function(a){if(a.setRequestHeader("X-WP-Nonce",b.nonce()),d)return d.apply(f,arguments)},c.complete=function(a){var c=a.getResponseHeader("X-WP-Nonce");c&&_.isFunction(b.nonce)&&b.nonce()!==c&&b.endpointModel.set("nonce",c)}),"read"===a&&(c.data?(f.state.data=_.clone(c.data),delete f.state.data.page):f.state.data=c.data={},"undefined"==typeof c.data.page?(f.state.currentPage=null,f.state.totalPages=null,f.state.totalObjects=null):f.state.currentPage=c.data.page-1,e=c.success,c.success=function(a,b,c){if(_.isUndefined(c)||(f.state.totalPages=parseInt(c.getResponseHeader("x-wp-totalpages"),10),f.state.totalObjects=parseInt(c.getResponseHeader("x-wp-total"),10)),null===f.state.currentPage?f.state.currentPage=1:f.state.currentPage++,e)return e.apply(this,arguments)}),Backbone.sync(a,b,c)},more:function(a){if(a=a||{},a.data=a.data||{},_.extend(a.data,this.state.data),"undefined"==typeof a.data.page){if(!this.hasMore())return!1;null===this.state.currentPage||this.state.currentPage<=1?a.data.page=2:a.data.page=this.state.currentPage+1}return this.fetch(a)},hasMore:function(){return null===this.state.totalPages||null===this.state.totalObjects||null===this.state.currentPage?null:this.state.currentPage0&&options.scrollInertia<17 ? 17:options.scrollInertia;
if(typeof options.mouseWheel!=="object"&&options.mouseWheel==true){
options.mouseWheel={enable:true,scrollAmount:"auto",axis:"y",preventDefault:false,deltaFactor:"auto",normalizeDelta:false,invert:false}}
options.mouseWheel.scrollAmount=!options.mouseWheelPixels ? options.mouseWheel.scrollAmount:options.mouseWheelPixels;
options.mouseWheel.normalizeDelta=!options.advanced.normalizeMouseWheelDelta ? options.mouseWheel.normalizeDelta:options.advanced.normalizeMouseWheelDelta;
options.scrollButtons.scrollType=_findScrollButtonsType(options.scrollButtons.scrollType);
_theme(options);
return $(selector).each(function(){
var $this=$(this);
if(!$this.data(pluginPfx)){
$this.data(pluginPfx,{
idx:++totalInstances,
opt:options,
scrollRatio:{y:null,x:null},
overflowed:null,
contentReset:{y:null,x:null},
bindEvents:false,
tweenRunning:false,
sequential:{},
langDir:$this.css("direction"),
cbOffsets:null,
trigger:null,
poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}});
var d=$this.data(pluginPfx),o=d.opt,
htmlDataAxis=$this.data("mcs-axis"),htmlDataSbPos=$this.data("mcs-scrollbar-position"),htmlDataTheme=$this.data("mcs-theme");
if(htmlDataAxis){o.axis=htmlDataAxis;}
if(htmlDataSbPos){o.scrollbarPosition=htmlDataSbPos;}
if(htmlDataTheme){
o.theme=htmlDataTheme;
_theme(o);
}
_pluginMarkup.call(this);
if(d&&o.callbacks.onCreate&&typeof o.callbacks.onCreate==="function"){o.callbacks.onCreate.call(this);}
$("#mCSB_"+d.idx+"_container img:not(."+classes[2]+")").addClass(classes[2]);
methods.update.call(null,$this);
}});
},
update:function(el,cb){
var selector=el||_selector.call(this);
return $(selector).each(function(){
var $this=$(this);
if($this.data(pluginPfx)){
var d=$this.data(pluginPfx),o=d.opt,
mCSB_container=$("#mCSB_"+d.idx+"_container"),
mCustomScrollBox=$("#mCSB_"+d.idx),
mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")];
if(!mCSB_container.length){return;}
if(d.tweenRunning){_stop($this);}
if(cb&&d && o.callbacks.onBeforeUpdate&&typeof o.callbacks.onBeforeUpdate==="function"){o.callbacks.onBeforeUpdate.call(this);}
if($this.hasClass(classes[3])){$this.removeClass(classes[3]);}
if($this.hasClass(classes[4])){$this.removeClass(classes[4]);}
mCustomScrollBox.css("max-height","none");
if(mCustomScrollBox.height()!==$this.height()){mCustomScrollBox.css("max-height",$this.height());}
_expandContentHorizontally.call(this);
if(o.axis!=="y"&&!o.advanced.autoExpandHorizontalScroll){
mCSB_container.css("width",_contentWidth(mCSB_container));
}
d.overflowed=_overflowed.call(this);
_scrollbarVisibility.call(this);
if(o.autoDraggerLength){_setDraggerLength.call(this);}
_scrollRatio.call(this);
_bindEvents.call(this);
var to=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)];
if(o.axis!=="x"){
if(!d.overflowed[0]){
_resetContentPosition.call(this);
if(o.axis==="y"){
_unbindEvents.call(this);
}else if(o.axis==="yx"&&d.overflowed[1]){
_scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"});
}}else if(mCSB_dragger[0].height()>mCSB_dragger[0].parent().height()){
_resetContentPosition.call(this);
}else{
_scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"});
d.contentReset.y=null;
}}
if(o.axis!=="y"){
if(!d.overflowed[1]){
_resetContentPosition.call(this);
if(o.axis==="x"){
_unbindEvents.call(this);
}else if(o.axis==="yx"&&d.overflowed[0]){
_scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"});
}}else if(mCSB_dragger[1].width()>mCSB_dragger[1].parent().width()){
_resetContentPosition.call(this);
}else{
_scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"});
d.contentReset.x=null;
}}
if(cb&&d){
if(cb===2&&o.callbacks.onImageLoad&&typeof o.callbacks.onImageLoad==="function"){
o.callbacks.onImageLoad.call(this);
}else if(cb===3&&o.callbacks.onSelectorChange&&typeof o.callbacks.onSelectorChange==="function"){
o.callbacks.onSelectorChange.call(this);
}else if(o.callbacks.onUpdate&&typeof o.callbacks.onUpdate==="function"){
o.callbacks.onUpdate.call(this);
}}
_autoUpdate.call(this);
}});
},
scrollTo:function(val,options){
if(typeof val=="undefined"||val==null){return;}
var selector=_selector.call(this);
return $(selector).each(function(){
var $this=$(this);
if($this.data(pluginPfx)){
var d=$this.data(pluginPfx),o=d.opt,
methodDefaults={
trigger:"external",
scrollInertia:o.scrollInertia,
scrollEasing:"mcsEaseInOut",
moveDragger:false,
timeout:60,
callbacks:true,
onStart:true,
onUpdate:true,
onComplete:true
},
methodOptions=$.extend(true,{},methodDefaults,options),
to=_arr.call(this,val),dur=methodOptions.scrollInertia>0&&methodOptions.scrollInertia<17 ? 17:methodOptions.scrollInertia;
to[0]=_to.call(this,to[0],"y");
to[1]=_to.call(this,to[1],"x");
if(methodOptions.moveDragger){
to[0]*=d.scrollRatio.y;
to[1]*=d.scrollRatio.x;
}
methodOptions.dur=_isTabHidden() ? 0:dur;
setTimeout(function(){
if(to[0]!==null&&typeof to[0]!=="undefined"&&o.axis!=="x"&&d.overflowed[0]){
methodOptions.dir="y";
methodOptions.overwrite="all";
_scrollTo($this,to[0].toString(),methodOptions);
}
if(to[1]!==null&&typeof to[1]!=="undefined"&&o.axis!=="y"&&d.overflowed[1]){
methodOptions.dir="x";
methodOptions.overwrite="none";
_scrollTo($this,to[1].toString(),methodOptions);
}},methodOptions.timeout);
}});
},
stop:function(){
var selector=_selector.call(this);
return $(selector).each(function(){
var $this=$(this);
if($this.data(pluginPfx)){
_stop($this);
}});
},
disable:function(r){
var selector=_selector.call(this);
return $(selector).each(function(){
var $this=$(this);
if($this.data(pluginPfx)){
var d=$this.data(pluginPfx);
_autoUpdate.call(this,"remove");
_unbindEvents.call(this);
if(r){_resetContentPosition.call(this);}
_scrollbarVisibility.call(this,true);
$this.addClass(classes[3]);
}});
},
destroy:function(){
var selector=_selector.call(this);
return $(selector).each(function(){
var $this=$(this);
if($this.data(pluginPfx)){
var d=$this.data(pluginPfx),o=d.opt,
mCustomScrollBox=$("#mCSB_"+d.idx),
mCSB_container=$("#mCSB_"+d.idx+"_container"),
scrollbar=$(".mCSB_"+d.idx+"_scrollbar");
if(o.live){removeLiveTimers(o.liveSelector||$(selector).selector);}
_autoUpdate.call(this,"remove");
_unbindEvents.call(this);
_resetContentPosition.call(this);
$this.removeData(pluginPfx);
_delete(this,"mcs");
scrollbar.remove();
mCSB_container.find("img."+classes[2]).removeClass(classes[2]);
mCustomScrollBox.replaceWith(mCSB_container.contents());
$this.removeClass(pluginNS+" _"+pluginPfx+"_"+d.idx+" "+classes[6]+" "+classes[7]+" "+classes[5]+" "+classes[3]).addClass(classes[4]);
}});
}
},
_selector=function(){
return (typeof $(this)!=="object"||$(this).length<1) ? defaultSelector:this;
},
_theme=function(obj){
var fixedSizeScrollbarThemes=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],
nonExpandedScrollbarThemes=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],
disabledScrollButtonsThemes=["minimal","minimal-dark"],
enabledAutoHideScrollbarThemes=["minimal","minimal-dark"],
scrollbarPositionOutsideThemes=["minimal","minimal-dark"];
obj.autoDraggerLength=$.inArray(obj.theme,fixedSizeScrollbarThemes) > -1 ? false:obj.autoDraggerLength;
obj.autoExpandScrollbar=$.inArray(obj.theme,nonExpandedScrollbarThemes) > -1 ? false:obj.autoExpandScrollbar;
obj.scrollButtons.enable=$.inArray(obj.theme,disabledScrollButtonsThemes) > -1 ? false:obj.scrollButtons.enable;
obj.autoHideScrollbar=$.inArray(obj.theme,enabledAutoHideScrollbarThemes) > -1 ? true:obj.autoHideScrollbar;
obj.scrollbarPosition=$.inArray(obj.theme,scrollbarPositionOutsideThemes) > -1 ? "outside":obj.scrollbarPosition;
},
removeLiveTimers=function(selector){
if(liveTimers[selector]){
clearTimeout(liveTimers[selector]);
_delete(liveTimers,selector);
}},
_findAxis=function(val){
return (val==="yx"||val==="xy"||val==="auto") ? "yx":(val==="x"||val==="horizontal") ? "x":"y";
},
_findScrollButtonsType=function(val){
return (val==="stepped"||val==="pixels"||val==="step"||val==="click") ? "stepped":"stepless";
},
_pluginMarkup=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
expandClass=o.autoExpandScrollbar ? " "+classes[1]+"_expand":"",
scrollbar=["",""],
wrapperClass=o.axis==="yx" ? "mCSB_vertical_horizontal":o.axis==="x" ? "mCSB_horizontal":"mCSB_vertical",
scrollbars=o.axis==="yx" ? scrollbar[0]+scrollbar[1]:o.axis==="x" ? scrollbar[1]:scrollbar[0],
contentWrapper=o.axis==="yx" ? "":"",
autoHideClass=o.autoHideScrollbar ? " "+classes[6]:"",
scrollbarDirClass=(o.axis!=="x"&&d.langDir==="rtl") ? " "+classes[7]:"";
if(o.setWidth){$this.css("width",o.setWidth);}
if(o.setHeight){$this.css("height",o.setHeight);}
o.setLeft=(o.axis!=="y"&&d.langDir==="rtl") ? "989999px":o.setLeft;
$this.addClass(pluginNS+" _"+pluginPfx+"_"+d.idx+autoHideClass+scrollbarDirClass).wrapInner("");
var mCustomScrollBox=$("#mCSB_"+d.idx),
mCSB_container=$("#mCSB_"+d.idx+"_container");
if(o.axis!=="y"&&!o.advanced.autoExpandHorizontalScroll){
mCSB_container.css("width",_contentWidth(mCSB_container));
}
if(o.scrollbarPosition==="outside"){
if($this.css("position")==="static"){
$this.css("position","relative");
}
$this.css("overflow","visible");
mCustomScrollBox.addClass("mCSB_outside").after(scrollbars);
}else{
mCustomScrollBox.addClass("mCSB_inside").append(scrollbars);
mCSB_container.wrap(contentWrapper);
}
_scrollButtons.call(this);
var mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")];
mCSB_dragger[0].css("min-height",mCSB_dragger[0].height());
mCSB_dragger[1].css("min-width",mCSB_dragger[1].width());
},
_contentWidth=function(el){
var val=[el[0].scrollWidth,Math.max.apply(Math,el.children().map(function(){return $(this).outerWidth(true);}).get())],w=el.parent().width();
return val[0]>w ? val[0]:val[1]>w ? val[1]:"100%";
},
_expandContentHorizontally=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
mCSB_container=$("#mCSB_"+d.idx+"_container");
if(o.advanced.autoExpandHorizontalScroll&&o.axis!=="y"){
mCSB_container.css({"width":"auto","min-width":0,"overflow-x":"scroll"});
var w=Math.ceil(mCSB_container[0].scrollWidth);
if(o.advanced.autoExpandHorizontalScroll===3||(o.advanced.autoExpandHorizontalScroll!==2&&w>mCSB_container.parent().width())){
mCSB_container.css({"width":w,"min-width":"100%","overflow-x":"inherit"});
}else{
mCSB_container.css({"overflow-x":"inherit","position":"absolute"})
.wrap("")
.css({
"width":(Math.ceil(mCSB_container[0].getBoundingClientRect().right+0.4)-Math.floor(mCSB_container[0].getBoundingClientRect().left)),
"min-width":"100%",
"position":"relative"
}).unwrap();
}}
},
_scrollButtons=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
mCSB_scrollTools=$(".mCSB_"+d.idx+"_scrollbar:first"),
tabindex=!_isNumeric(o.scrollButtons.tabindex) ? "":"tabindex='"+o.scrollButtons.tabindex+"'",
btnHTML=[
"",
"",
"",
""
],
btn=[(o.axis==="x" ? btnHTML[2]:btnHTML[0]),(o.axis==="x" ? btnHTML[3]:btnHTML[1]),btnHTML[2],btnHTML[3]];
if(o.scrollButtons.enable){
mCSB_scrollTools.prepend(btn[0]).append(btn[1]).next(".mCSB_scrollTools").prepend(btn[2]).append(btn[3]);
}},
_setDraggerLength=function(){
var $this=$(this),d=$this.data(pluginPfx),
mCustomScrollBox=$("#mCSB_"+d.idx),
mCSB_container=$("#mCSB_"+d.idx+"_container"),
mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
ratio=[mCustomScrollBox.height()/mCSB_container.outerHeight(false),mCustomScrollBox.width()/mCSB_container.outerWidth(false)],
l=[
parseInt(mCSB_dragger[0].css("min-height")),Math.round(ratio[0]*mCSB_dragger[0].parent().height()),
parseInt(mCSB_dragger[1].css("min-width")),Math.round(ratio[1]*mCSB_dragger[1].parent().width())
],
h=oldIE&&(l[1]contentHeight){contentHeight=h;}
if(w>contentWidth){contentWidth=w;}
return [contentHeight>mCustomScrollBox.height(),contentWidth>mCustomScrollBox.width()];
},
_resetContentPosition=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
mCustomScrollBox=$("#mCSB_"+d.idx),
mCSB_container=$("#mCSB_"+d.idx+"_container"),
mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")];
_stop($this);
if((o.axis!=="x"&&!d.overflowed[0])||(o.axis==="y"&&d.overflowed[0])){
mCSB_dragger[0].add(mCSB_container).css("top",0);
_scrollTo($this,"_resetY");
}
if((o.axis!=="y"&&!d.overflowed[1])||(o.axis==="x"&&d.overflowed[1])){
var cx=dx=0;
if(d.langDir==="rtl"){
cx=mCustomScrollBox.width()-mCSB_container.outerWidth(false);
dx=Math.abs(cx/d.scrollRatio.x);
}
mCSB_container.css("left",cx);
mCSB_dragger[1].css("left",dx);
_scrollTo($this,"_resetX");
}},
_bindEvents=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt;
if(!d.bindEvents){
_draggable.call(this);
if(o.contentTouchScroll){_contentDraggable.call(this);}
_selectable.call(this);
if(o.mouseWheel.enable){
function _mwt(){
mousewheelTimeout=setTimeout(function(){
if(!$.event.special.mousewheel){
_mwt();
}else{
clearTimeout(mousewheelTimeout);
_mousewheel.call($this[0]);
}},100);
}
var mousewheelTimeout;
_mwt();
}
_draggerRail.call(this);
_wrapperScroll.call(this);
if(o.advanced.autoScrollOnFocus){_focus.call(this);}
if(o.scrollButtons.enable){_buttons.call(this);}
if(o.keyboard.enable){_keyboard.call(this);}
d.bindEvents=true;
}},
_unbindEvents=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
namespace=pluginPfx+"_"+d.idx,
sb=".mCSB_"+d.idx+"_scrollbar",
sel=$("#mCSB_"+d.idx+",#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,"+sb+" ."+classes[12]+",#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal,"+sb+">a"),
mCSB_container=$("#mCSB_"+d.idx+"_container");
if(o.advanced.releaseDraggableSelectors){sel.add($(o.advanced.releaseDraggableSelectors));}
if(o.advanced.extraDraggableSelectors){sel.add($(o.advanced.extraDraggableSelectors));}
if(d.bindEvents){
$(document).add($(!_canAccessIFrame()||top.document)).unbind("."+namespace);
sel.each(function(){
$(this).unbind("."+namespace);
});
clearTimeout($this[0]._focusTimeout); _delete($this[0],"_focusTimeout");
clearTimeout(d.sequential.step); _delete(d.sequential,"step");
clearTimeout(mCSB_container[0].onCompleteTimeout); _delete(mCSB_container[0],"onCompleteTimeout");
d.bindEvents=false;
}},
_scrollbarVisibility=function(disabled){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
contentWrapper=$("#mCSB_"+d.idx+"_container_wrapper"),
content=contentWrapper.length ? contentWrapper:$("#mCSB_"+d.idx+"_container"),
scrollbar=[$("#mCSB_"+d.idx+"_scrollbar_vertical"),$("#mCSB_"+d.idx+"_scrollbar_horizontal")],
mCSB_dragger=[scrollbar[0].find(".mCSB_dragger"),scrollbar[1].find(".mCSB_dragger")];
if(o.axis!=="x"){
if(d.overflowed[0]&&!disabled){
scrollbar[0].add(mCSB_dragger[0]).add(scrollbar[0].children("a")).css("display","block");
content.removeClass(classes[8]+" "+classes[10]);
}else{
if(o.alwaysShowScrollbar){
if(o.alwaysShowScrollbar!==2){mCSB_dragger[0].css("display","none");}
content.removeClass(classes[10]);
}else{
scrollbar[0].css("display","none");
content.addClass(classes[10]);
}
content.addClass(classes[8]);
}}
if(o.axis!=="y"){
if(d.overflowed[1]&&!disabled){
scrollbar[1].add(mCSB_dragger[1]).add(scrollbar[1].children("a")).css("display","block");
content.removeClass(classes[9]+" "+classes[11]);
}else{
if(o.alwaysShowScrollbar){
if(o.alwaysShowScrollbar!==2){mCSB_dragger[1].css("display","none");}
content.removeClass(classes[11]);
}else{
scrollbar[1].css("display","none");
content.addClass(classes[11]);
}
content.addClass(classes[9]);
}}
if(!d.overflowed[0]&&!d.overflowed[1]){
$this.addClass(classes[5]);
}else{
$this.removeClass(classes[5]);
}},
_coordinates=function(e){
var t=e.type,o=e.target.ownerDocument!==document&&frameElement!==null ? [$(frameElement).offset().top,$(frameElement).offset().left]:null,
io=_canAccessIFrame()&&e.target.ownerDocument!==top.document&&frameElement!==null ? [$(e.view.frameElement).offset().top,$(e.view.frameElement).offset().left]:[0,0];
switch(t){
case "pointerdown": case "MSPointerDown": case "pointermove": case "MSPointerMove": case "pointerup": case "MSPointerUp":
return o ? [e.originalEvent.pageY-o[0]+io[0],e.originalEvent.pageX-o[1]+io[1],false]:[e.originalEvent.pageY,e.originalEvent.pageX,false];
break;
case "touchstart": case "touchmove": case "touchend":
var touch=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],
touches=e.originalEvent.touches.length||e.originalEvent.changedTouches.length;
return e.target.ownerDocument!==document ? [touch.screenY,touch.screenX,touches>1]:[touch.pageY,touch.pageX,touches>1];
break;
default:
return o ? [e.pageY-o[0]+io[0],e.pageX-o[1]+io[1],false]:[e.pageY,e.pageX,false];
}},
_draggable=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
namespace=pluginPfx+"_"+d.idx,
draggerId=["mCSB_"+d.idx+"_dragger_vertical","mCSB_"+d.idx+"_dragger_horizontal"],
mCSB_container=$("#mCSB_"+d.idx+"_container"),
mCSB_dragger=$("#"+draggerId[0]+",#"+draggerId[1]),
draggable,dragY,dragX,
rds=o.advanced.releaseDraggableSelectors ? mCSB_dragger.add($(o.advanced.releaseDraggableSelectors)):mCSB_dragger,
eds=o.advanced.extraDraggableSelectors ? $(!_canAccessIFrame()||top.document).add($(o.advanced.extraDraggableSelectors)):$(!_canAccessIFrame()||top.document);
mCSB_dragger.bind("contextmenu."+namespace,function(e){
e.preventDefault();
}).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){
e.stopImmediatePropagation();
e.preventDefault();
if(!_mouseBtnLeft(e)){return;}
touchActive=true;
if(oldIE){document.onselectstart=function(){return false;}}
_iframe.call(mCSB_container,false);
_stop($this);
draggable=$(this);
var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left,
h=draggable.height()+offset.top,w=draggable.width()+offset.left;
if(y0&&x0){
dragY=y;
dragX=x;
}
_onDragClasses(draggable,"active",o.autoExpandScrollbar);
}).bind("touchmove."+namespace,function(e){
e.stopImmediatePropagation();
e.preventDefault();
var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left;
_drag(dragY,dragX,y,x);
});
$(document).add(eds).bind("mousemove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace,function(e){
if(draggable){
var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left;
if(dragY===y&&dragX===x){return;}
_drag(dragY,dragX,y,x);
}}).add(rds).bind("mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){
if(draggable){
_onDragClasses(draggable,"active",o.autoExpandScrollbar);
draggable=null;
}
touchActive=false;
if(oldIE){document.onselectstart=null;}
_iframe.call(mCSB_container,true);
});
function _drag(dragY,dragX,y,x){
mCSB_container[0].idleTimer=o.scrollInertia<233 ? 250:0;
if(draggable.attr("id")===draggerId[1]){
var dir="x",to=((draggable[0].offsetLeft-dragX)+x)*d.scrollRatio.x;
}else{
var dir="y",to=((draggable[0].offsetTop-dragY)+y)*d.scrollRatio.y;
}
_scrollTo($this,to.toString(),{dir:dir,drag:true});
}},
_contentDraggable=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
namespace=pluginPfx+"_"+d.idx,
mCustomScrollBox=$("#mCSB_"+d.idx),
mCSB_container=$("#mCSB_"+d.idx+"_container"),
mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
draggable,dragY,dragX,touchStartY,touchStartX,touchMoveY=[],touchMoveX=[],startTime,runningTime,endTime,distance,speed,amount,
durA=0,durB,overwrite=o.axis==="yx" ? "none":"all",touchIntent=[],touchDrag,docDrag,
iframe=mCSB_container.find("iframe"),
events=[
"touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,
"touchmove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace,
"touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace
],
touchAction=document.body.style.touchAction!==undefined&&document.body.style.touchAction!=="";
mCSB_container.bind(events[0],function(e){
_onTouchstart(e);
}).bind(events[1],function(e){
_onTouchmove(e);
});
mCustomScrollBox.bind(events[0],function(e){
_onTouchstart2(e);
}).bind(events[2],function(e){
_onTouchend(e);
});
if(iframe.length){
iframe.each(function(){
$(this).bind("load",function(){
if(_canAccessIFrame(this)){
$(this.contentDocument||this.contentWindow.document).bind(events[0],function(e){
_onTouchstart(e);
_onTouchstart2(e);
}).bind(events[1],function(e){
_onTouchmove(e);
}).bind(events[2],function(e){
_onTouchend(e);
});
}});
});
}
function _onTouchstart(e){
if(!_pointerTouch(e)||touchActive||_coordinates(e)[2]){touchable=0; return;}
touchable=1; touchDrag=0; docDrag=0; draggable=1;
$this.removeClass("mCS_touch_action");
var offset=mCSB_container.offset();
dragY=_coordinates(e)[0]-offset.top;
dragX=_coordinates(e)[1]-offset.left;
touchIntent=[_coordinates(e)[0],_coordinates(e)[1]];
}
function _onTouchmove(e){
if(!_pointerTouch(e)||touchActive||_coordinates(e)[2]){return;}
if(!o.documentTouchScroll){e.preventDefault();}
e.stopImmediatePropagation();
if(docDrag&&!touchDrag){return;}
if(draggable){
runningTime=_getTime();
var offset=mCustomScrollBox.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left,
easing="mcsLinearOut";
touchMoveY.push(y);
touchMoveX.push(x);
touchIntent[2]=Math.abs(_coordinates(e)[0]-touchIntent[0]); touchIntent[3]=Math.abs(_coordinates(e)[1]-touchIntent[1]);
if(d.overflowed[0]){
var limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(),
prevent=((dragY-y)>0&&(y-dragY)>-(limit*d.scrollRatio.y)&&(touchIntent[3]*20&&(x-dragX)>-(limitX*d.scrollRatio.x)&&(touchIntent[2]*230){return;}
speed=1000/(endTime-startTime);
var easing="mcsEaseOut",slow=speed<2.5,
diff=slow ? [touchMoveY[touchMoveY.length-2],touchMoveX[touchMoveX.length-2]]:[0,0];
distance=slow ? [(y-diff[0]),(x-diff[1])]:[y-touchStartY,x-touchStartX];
var absDistance=[Math.abs(distance[0]),Math.abs(distance[1])];
speed=slow ? [Math.abs(distance[0]/4),Math.abs(distance[1]/4)]:[speed,speed];
var a=[
Math.abs(mCSB_container[0].offsetTop)-(distance[0]*_m((absDistance[0]/speed[0]),speed[0])),
Math.abs(mCSB_container[0].offsetLeft)-(distance[1]*_m((absDistance[1]/speed[1]),speed[1]))
];
amount=o.axis==="yx" ? [a[0],a[1]]:o.axis==="x" ? [null,a[1]]:[a[0],null];
durB=[(absDistance[0]*4)+o.scrollInertia,(absDistance[1]*4)+o.scrollInertia];
var md=parseInt(o.contentTouchScroll)||0;
amount[0]=absDistance[0]>md ? amount[0]:0;
amount[1]=absDistance[1]>md ? amount[1]:0;
if(d.overflowed[0]){_drag(amount[0],durB[0],easing,"y",overwrite,false);}
if(d.overflowed[1]){_drag(amount[1],durB[1],easing,"x",overwrite,false);}}
function _m(ds,s){
var r=[s*1.5,s*2,s/1.5,s/2];
if(ds>90){
return s>4 ? r[0]:r[3];
}else if(ds>60){
return s>3 ? r[3]:r[2];
}else if(ds>30){
return s>8 ? r[1]:s>6 ? r[0]:s>4 ? s:r[2];
}else{
return s>8 ? s:r[3];
}}
function _drag(amount,dur,easing,dir,overwrite,drag){
if(!amount){return;}
_scrollTo($this,amount.toString(),{dur:dur,scrollEasing:easing,dir:dir,overwrite:overwrite,drag:drag});
}},
_selectable=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential,
namespace=pluginPfx+"_"+d.idx,
mCSB_container=$("#mCSB_"+d.idx+"_container"),
wrapper=mCSB_container.parent(),
action;
mCSB_container.bind("mousedown."+namespace,function(e){
if(touchable){return;}
if(!action){action=1; touchActive=true;}}).add(document).bind("mousemove."+namespace,function(e){
if(!touchable&&action&&_sel()){
var offset=mCSB_container.offset(),
y=_coordinates(e)[0]-offset.top+mCSB_container[0].offsetTop,x=_coordinates(e)[1]-offset.left+mCSB_container[0].offsetLeft;
if(y>0&&y0&&xwrapper.height()){
_seq("on",40);
}}
if(o.axis!=="y"&&d.overflowed[1]){
if(x<0){
_seq("on",37);
}else if(x>wrapper.width()){
_seq("on",39);
}}
}}
}).bind("mouseup."+namespace+" dragend."+namespace,function(e){
if(touchable){return;}
if(action){action=0; _seq("off",null);}
touchActive=false;
});
function _sel(){
return window.getSelection ? window.getSelection().toString() :
document.selection&&document.selection.type!="Control" ? document.selection.createRange().text:0;
}
function _seq(a,c,s){
seq.type=s&&action ? "stepped":"stepless";
seq.scrollAmount=10;
_sequentialScroll($this,a,c,"mcsLinearOut",s ? 60:null);
}},
_mousewheel=function(){
if(!$(this).data(pluginPfx)){return;}
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
namespace=pluginPfx+"_"+d.idx,
mCustomScrollBox=$("#mCSB_"+d.idx),
mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
iframe=$("#mCSB_"+d.idx+"_container").find("iframe");
if(iframe.length){
iframe.each(function(){
$(this).bind("load",function(){
if(_canAccessIFrame(this)){
$(this.contentDocument||this.contentWindow.document).bind("mousewheel."+namespace,function(e,delta){
_onMousewheel(e,delta);
});
}});
});
}
mCustomScrollBox.bind("mousewheel."+namespace,function(e,delta){
_onMousewheel(e,delta);
});
function _onMousewheel(e,delta){
_stop($this);
if(_disableMousewheel($this,e.target)){return;}
var deltaFactor=o.mouseWheel.deltaFactor!=="auto" ? parseInt(o.mouseWheel.deltaFactor):(oldIE&&e.deltaFactor<100) ? 100:e.deltaFactor||100,
dur=o.scrollInertia;
if(o.axis==="x"||o.mouseWheel.axis==="x"){
var dir="x",
px=[Math.round(deltaFactor*d.scrollRatio.x),parseInt(o.mouseWheel.scrollAmount)],
amount=o.mouseWheel.scrollAmount!=="auto" ? px[1]:px[0]>=mCustomScrollBox.width() ? mCustomScrollBox.width()*0.9:px[0],
contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetLeft),
draggerPos=mCSB_dragger[1][0].offsetLeft,
limit=mCSB_dragger[1].parent().width()-mCSB_dragger[1].width(),
dlt=o.mouseWheel.axis==="y" ? (e.deltaY||delta):e.deltaX;
}else{
var dir="y",
px=[Math.round(deltaFactor*d.scrollRatio.y),parseInt(o.mouseWheel.scrollAmount)],
amount=o.mouseWheel.scrollAmount!=="auto" ? px[1]:px[0]>=mCustomScrollBox.height() ? mCustomScrollBox.height()*0.9:px[0],
contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetTop),
draggerPos=mCSB_dragger[0][0].offsetTop,
limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(),
dlt=e.deltaY||delta;
}
if((dir==="y"&&!d.overflowed[0])||(dir==="x"&&!d.overflowed[1])){return;}
if(o.mouseWheel.invert||e.webkitDirectionInvertedFromDevice){dlt=-dlt;}
if(o.mouseWheel.normalizeDelta){dlt=dlt<0 ? -1:1;}
if((dlt>0&&draggerPos!==0)||(dlt<0&&draggerPos!==limit)||o.mouseWheel.preventDefault){
e.stopImmediatePropagation();
e.preventDefault();
}
if(e.deltaFactor<5&&!o.mouseWheel.normalizeDelta){
amount=e.deltaFactor; dur=17;
}
_scrollTo($this,(contentPos-(dlt*amount)).toString(),{dir:dir,dur:dur});
}},
_canAccessIFrameCache=new Object(),
_canAccessIFrame=function(iframe){
var result=false,cacheKey=false,html=null;
if(iframe===undefined){
cacheKey="#empty";
}else if($(iframe).attr("id")!==undefined){
cacheKey=$(iframe).attr("id");
}
if(cacheKey!==false&&_canAccessIFrameCache[cacheKey]!==undefined){
return _canAccessIFrameCache[cacheKey];
}
if(!iframe){
try{
var doc=top.document;
html=doc.body.innerHTML;
}catch(err){}
result=(html!==null);
}else{
try{
var doc=iframe.contentDocument||iframe.contentWindow.document;
html=doc.body.innerHTML;
}catch(err){}
result=(html!==null);
}
if(cacheKey!==false){_canAccessIFrameCache[cacheKey]=result;}
return result;
},
_iframe=function(evt){
var el=this.find("iframe");
if(!el.length){return;}
var val=!evt ? "none":"auto";
el.css("pointer-events",val);
},
_disableMousewheel=function(el,target){
var tag=target.nodeName.toLowerCase(),
tags=el.data(pluginPfx).opt.mouseWheel.disableOver,
focusTags=["select","textarea"];
return $.inArray(tag,tags) > -1&&!($.inArray(tag,focusTags) > -1&&!$(target).is(":focus"));
},
_draggerRail=function(){
var $this=$(this),d=$this.data(pluginPfx),
namespace=pluginPfx+"_"+d.idx,
mCSB_container=$("#mCSB_"+d.idx+"_container"),
wrapper=mCSB_container.parent(),
mCSB_draggerContainer=$(".mCSB_"+d.idx+"_scrollbar ."+classes[12]),
clickable;
mCSB_draggerContainer.bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){
touchActive=true;
if(!$(e.target).hasClass("mCSB_dragger")){clickable=1;}}).bind("touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){
touchActive=false;
}).bind("click."+namespace,function(e){
if(!clickable){return;}
clickable=0;
if($(e.target).hasClass(classes[12])||$(e.target).hasClass("mCSB_draggerRail")){
_stop($this);
var el=$(this),mCSB_dragger=el.find(".mCSB_dragger");
if(el.parent(".mCSB_scrollTools_horizontal").length>0){
if(!d.overflowed[1]){return;}
var dir="x",
clickDir=e.pageX>mCSB_dragger.offset().left ? -1:1,
to=Math.abs(mCSB_container[0].offsetLeft)-(clickDir*(wrapper.width()*0.9));
}else{
if(!d.overflowed[0]){return;}
var dir="y",
clickDir=e.pageY>mCSB_dragger.offset().top ? -1:1,
to=Math.abs(mCSB_container[0].offsetTop)-(clickDir*(wrapper.height()*0.9));
}
_scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"});
}});
},
_focus=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
namespace=pluginPfx+"_"+d.idx,
mCSB_container=$("#mCSB_"+d.idx+"_container"),
wrapper=mCSB_container.parent();
mCSB_container.bind("focusin."+namespace,function(e){
var el=$(document.activeElement),
nested=mCSB_container.find(".mCustomScrollBox").length,
dur=0;
if(!el.is(o.advanced.autoScrollOnFocus)){return;}
_stop($this);
clearTimeout($this[0]._focusTimeout);
$this[0]._focusTimer=nested ? (dur+17)*nested:0;
$this[0]._focusTimeout=setTimeout(function(){
var to=[_childPos(el)[0],_childPos(el)[1]],
contentPos=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft],
isVisible=[
(contentPos[0]+to[0]>=0&&contentPos[0]+to[0]=0&&contentPos[0]+to[1]a");
btn.bind("contextmenu."+namespace,function(e){
e.preventDefault();
}).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace+" mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace+" mouseout."+namespace+" pointerout."+namespace+" MSPointerOut."+namespace+" click."+namespace,function(e){
e.preventDefault();
if(!_mouseBtnLeft(e)){return;}
var btnClass=$(this).attr("class");
seq.type=o.scrollButtons.scrollType;
switch(e.type){
case "mousedown": case "touchstart": case "pointerdown": case "MSPointerDown":
if(seq.type==="stepped"){return;}
touchActive=true;
d.tweenRunning=false;
_seq("on",btnClass);
break;
case "mouseup": case "touchend": case "pointerup": case "MSPointerUp":
case "mouseout": case "pointerout": case "MSPointerOut":
if(seq.type==="stepped"){return;}
touchActive=false;
if(seq.dir){_seq("off",btnClass);}
break;
case "click":
if(seq.type!=="stepped"||d.tweenRunning){return;}
_seq("on",btnClass);
break;
}
function _seq(a,c){
seq.scrollAmount=o.scrollButtons.scrollAmount;
_sequentialScroll($this,a,c);
}});
},
_keyboard=function(){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential,
namespace=pluginPfx+"_"+d.idx,
mCustomScrollBox=$("#mCSB_"+d.idx),
mCSB_container=$("#mCSB_"+d.idx+"_container"),
wrapper=mCSB_container.parent(),
editables="input,textarea,select,datalist,keygen,[contenteditable='true']",
iframe=mCSB_container.find("iframe"),
events=["blur."+namespace+" keydown."+namespace+" keyup."+namespace];
if(iframe.length){
iframe.each(function(){
$(this).bind("load",function(){
if(_canAccessIFrame(this)){
$(this.contentDocument||this.contentWindow.document).bind(events[0],function(e){
_onKeyboard(e);
});
}});
});
}
mCustomScrollBox.attr("tabindex","0").bind(events[0],function(e){
_onKeyboard(e);
});
function _onKeyboard(e){
switch(e.type){
case "blur":
if(d.tweenRunning&&seq.dir){_seq("off",null);}
break;
case "keydown": case "keyup":
var code=e.keyCode ? e.keyCode:e.which,action="on";
if((o.axis!=="x"&&(code===38||code===40))||(o.axis!=="y"&&(code===37||code===39))){
if(((code===38||code===40)&&!d.overflowed[0])||((code===37||code===39)&&!d.overflowed[1])){return;}
if(e.type==="keyup"){action="off";}
if(!$(document.activeElement).is(editables)){
e.preventDefault();
e.stopImmediatePropagation();
_seq(action,code);
}}else if(code===33||code===34){
if(d.overflowed[0]||d.overflowed[1]){
e.preventDefault();
e.stopImmediatePropagation();
}
if(e.type==="keyup"){
_stop($this);
var keyboardDir=code===34 ? -1:1;
if(o.axis==="x"||(o.axis==="yx"&&d.overflowed[1]&&!d.overflowed[0])){
var dir="x",to=Math.abs(mCSB_container[0].offsetLeft)-(keyboardDir*(wrapper.width()*0.9));
}else{
var dir="y",to=Math.abs(mCSB_container[0].offsetTop)-(keyboardDir*(wrapper.height()*0.9));
}
_scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"});
}}else if(code===35||code===36){
if(!$(document.activeElement).is(editables)){
if(d.overflowed[0]||d.overflowed[1]){
e.preventDefault();
e.stopImmediatePropagation();
}
if(e.type==="keyup"){
if(o.axis==="x"||(o.axis==="yx"&&d.overflowed[1]&&!d.overflowed[0])){
var dir="x",to=code===35 ? Math.abs(wrapper.width()-mCSB_container.outerWidth(false)):0;
}else{
var dir="y",to=code===35 ? Math.abs(wrapper.height()-mCSB_container.outerHeight(false)):0;
}
_scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"});
}}
}
break;
}
function _seq(a,c){
seq.type=o.keyboard.scrollType;
seq.scrollAmount=o.keyboard.scrollAmount;
if(seq.type==="stepped"&&d.tweenRunning){return;}
_sequentialScroll($this,a,c);
}}
},
_sequentialScroll=function(el,action,trigger,e,s){
var d=el.data(pluginPfx),o=d.opt,seq=d.sequential,
mCSB_container=$("#mCSB_"+d.idx+"_container"),
once=seq.type==="stepped" ? true:false,
steplessSpeed=o.scrollInertia < 26 ? 26:o.scrollInertia,
steppedSpeed=o.scrollInertia < 1 ? 17:o.scrollInertia;
switch(action){
case "on":
seq.dir=[
(trigger===classes[16]||trigger===classes[15]||trigger===39||trigger===37 ? "x":"y"),
(trigger===classes[13]||trigger===classes[15]||trigger===38||trigger===37 ? -1:1)
];
_stop(el);
if(_isNumeric(trigger)&&seq.type==="stepped"){return;}
_on(once);
break;
case "off":
_off();
if(once||(d.tweenRunning&&seq.dir)){
_on(true);
}
break;
}
function _on(once){
if(o.snapAmount){seq.scrollAmount=!(o.snapAmount instanceof Array) ? o.snapAmount:seq.dir[0]==="x" ? o.snapAmount[1]:o.snapAmount[0];}
var c=seq.type!=="stepped",
t=s ? s:!once ? 1000/60:c ? steplessSpeed/1.5:steppedSpeed,
m=!once ? 2.5:c ? 7.5:40,
contentPos=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)],
ratio=[d.scrollRatio.y>10 ? 10:d.scrollRatio.y,d.scrollRatio.x>10 ? 10:d.scrollRatio.x],
amount=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*(ratio[1]*m)):contentPos[0]+(seq.dir[1]*(ratio[0]*m)),
px=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*parseInt(seq.scrollAmount)):contentPos[0]+(seq.dir[1]*parseInt(seq.scrollAmount)),
to=seq.scrollAmount!=="auto" ? px:amount,
easing=e ? e:!once ? "mcsLinear":c ? "mcsLinearOut":"mcsEaseInOut",
onComplete=!once ? false:true;
if(once&&t<17){
to=seq.dir[0]==="x" ? contentPos[1]:contentPos[0];
}
_scrollTo(el,to.toString(),{dir:seq.dir[0],scrollEasing:easing,dur:t,onComplete:onComplete});
if(once){
seq.dir=false;
return;
}
clearTimeout(seq.step);
seq.step=setTimeout(function(){
_on();
},t);
}
function _off(){
clearTimeout(seq.step);
_delete(seq,"step");
_stop(el);
}},
_arr=function(val){
var o=$(this).data(pluginPfx).opt,vals=[];
if(typeof val==="function"){val=val();}
if(!(val instanceof Array)){
vals[0]=val.y ? val.y:val.x||o.axis==="x" ? null:val;
vals[1]=val.x ? val.x:val.y||o.axis==="y" ? null:val;
}else{
vals=val.length>1 ? [val[0],val[1]]:o.axis==="x" ? [null,val[0]]:[val[0],null];
}
if(typeof vals[0]==="function"){vals[0]=vals[0]();}
if(typeof vals[1]==="function"){vals[1]=vals[1]();}
return vals;
},
_to=function(val,dir){
if(val==null||typeof val=="undefined"){return;}
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
mCSB_container=$("#mCSB_"+d.idx+"_container"),
wrapper=mCSB_container.parent(),
t=typeof val;
if(!dir){dir=o.axis==="x" ? "x":"y";}
var contentLength=dir==="x" ? mCSB_container.outerWidth(false)-wrapper.width():mCSB_container.outerHeight(false)-wrapper.height(),
contentPos=dir==="x" ? mCSB_container[0].offsetLeft:mCSB_container[0].offsetTop,
cssProp=dir==="x" ? "left":"top";
switch(t){
case "function":
return val();
break;
case "object":
var obj=val.jquery ? val:$(val);
if(!obj.length){return;}
return dir==="x" ? _childPos(obj)[1]:_childPos(obj)[0];
break;
case "string": case "number":
if(_isNumeric(val)){
return Math.abs(val);
}else if(val.indexOf("%")!==-1){
return Math.abs(contentLength*parseInt(val)/100);
}else if(val.indexOf("-=")!==-1){
return Math.abs(contentPos-parseInt(val.split("-=")[1]));
}else if(val.indexOf("+=")!==-1){
var p=(contentPos+parseInt(val.split("+=")[1]));
return p>=0 ? 0:Math.abs(p);
}else if(val.indexOf("px")!==-1&&_isNumeric(val.split("px")[0])){
return Math.abs(val.split("px")[0]);
}else{
if(val==="top"||val==="left"){
return 0;
}else if(val==="bottom"){
return Math.abs(wrapper.height()-mCSB_container.outerHeight(false));
}else if(val==="right"){
return Math.abs(wrapper.width()-mCSB_container.outerWidth(false));
}else if(val==="first"||val==="last"){
var obj=mCSB_container.find(":"+val);
return dir==="x" ? _childPos(obj)[1]:_childPos(obj)[0];
}else{
if($(val).length){
return dir==="x" ? _childPos($(val))[1]:_childPos($(val))[0];
}else{
mCSB_container.css(cssProp,val);
methods.update.call(null,$this[0]);
return;
}}
}
break;
}},
_autoUpdate=function(rem){
var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
mCSB_container=$("#mCSB_"+d.idx+"_container");
if(rem){
clearTimeout(mCSB_container[0].autoUpdate);
_delete(mCSB_container[0],"autoUpdate");
return;
}
upd();
function upd(){
clearTimeout(mCSB_container[0].autoUpdate);
if($this.parents("html").length===0){
$this=null;
return;
}
mCSB_container[0].autoUpdate=setTimeout(function(){
if(o.advanced.updateOnSelectorChange){
d.poll.change.n=sizesSum();
if(d.poll.change.n!==d.poll.change.o){
d.poll.change.o=d.poll.change.n;
doUpd(3);
return;
}}
if(o.advanced.updateOnContentResize){
d.poll.size.n=$this[0].scrollHeight+$this[0].scrollWidth+mCSB_container[0].offsetHeight+$this[0].offsetHeight+$this[0].offsetWidth;
if(d.poll.size.n!==d.poll.size.o){
d.poll.size.o=d.poll.size.n;
doUpd(1);
return;
}}
if(o.advanced.updateOnImageLoad){
if(!(o.advanced.updateOnImageLoad==="auto"&&o.axis==="y")){
d.poll.img.n=mCSB_container.find("img").length;
if(d.poll.img.n!==d.poll.img.o){
d.poll.img.o=d.poll.img.n;
mCSB_container.find("img").each(function(){
imgLoader(this);
});
return;
}}
}
if(o.advanced.updateOnSelectorChange||o.advanced.updateOnContentResize||o.advanced.updateOnImageLoad){upd();}},o.advanced.autoUpdateTimeout);
}
function imgLoader(el){
if($(el).hasClass(classes[2])){doUpd(); return;}
var img=new Image();
function createDelegate(contextObject,delegateMethod){
return function(){return delegateMethod.apply(contextObject,arguments);}}
function imgOnLoad(){
this.onload=null;
$(el).addClass(classes[2]);
doUpd(2);
}
img.onload=createDelegate(img,imgOnLoad);
img.src=el.src;
}
function sizesSum(){
if(o.advanced.updateOnSelectorChange===true){o.advanced.updateOnSelectorChange="*";}
var total=0,sel=mCSB_container.find(o.advanced.updateOnSelectorChange);
if(o.advanced.updateOnSelectorChange&&sel.length>0){sel.each(function(){total+=this.offsetHeight+this.offsetWidth;});}
return total;
}
function doUpd(cb){
clearTimeout(mCSB_container[0].autoUpdate);
methods.update.call(null,$this[0],cb);
}},
_snapAmount=function(to,amount,offset){
return (Math.round(to/amount)*amount-offset);
},
_stop=function(el){
var d=el.data(pluginPfx),
sel=$("#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal");
sel.each(function(){
_stopTween.call(this);
});
},
_scrollTo=function(el,to,options){
var d=el.data(pluginPfx),o=d.opt,
defaults={
trigger:"internal",
dir:"y",
scrollEasing:"mcsEaseOut",
drag:false,
dur:o.scrollInertia,
overwrite:"all",
callbacks:true,
onStart:true,
onUpdate:true,
onComplete:true
},
options=$.extend(defaults,options),
dur=[options.dur,(options.drag ? 0:options.dur)],
mCustomScrollBox=$("#mCSB_"+d.idx),
mCSB_container=$("#mCSB_"+d.idx+"_container"),
wrapper=mCSB_container.parent(),
totalScrollOffsets=o.callbacks.onTotalScrollOffset ? _arr.call(el,o.callbacks.onTotalScrollOffset):[0,0],
totalScrollBackOffsets=o.callbacks.onTotalScrollBackOffset ? _arr.call(el,o.callbacks.onTotalScrollBackOffset):[0,0];
d.trigger=options.trigger;
if(wrapper.scrollTop()!==0||wrapper.scrollLeft()!==0){
$(".mCSB_"+d.idx+"_scrollbar").css("visibility","visible");
wrapper.scrollTop(0).scrollLeft(0);
}
if(to==="_resetY"&&!d.contentReset.y){
if(_cb("onOverflowYNone")){o.callbacks.onOverflowYNone.call(el[0]);}
d.contentReset.y=1;
}
if(to==="_resetX"&&!d.contentReset.x){
if(_cb("onOverflowXNone")){o.callbacks.onOverflowXNone.call(el[0]);}
d.contentReset.x=1;
}
if(to==="_resetY"||to==="_resetX"){return;}
if((d.contentReset.y||!el[0].mcs)&&d.overflowed[0]){
if(_cb("onOverflowY")){o.callbacks.onOverflowY.call(el[0]);}
d.contentReset.x=null;
}
if((d.contentReset.x||!el[0].mcs)&&d.overflowed[1]){
if(_cb("onOverflowX")){o.callbacks.onOverflowX.call(el[0]);}
d.contentReset.x=null;
}
if(o.snapAmount){
var snapAmount=!(o.snapAmount instanceof Array) ? o.snapAmount:options.dir==="x" ? o.snapAmount[1]:o.snapAmount[0];
to=_snapAmount(to,snapAmount,o.snapOffset);
}
switch(options.dir){
case "x":
var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_horizontal"),
property="left",
contentPos=mCSB_container[0].offsetLeft,
limit=[
mCustomScrollBox.width()-mCSB_container.outerWidth(false),
mCSB_dragger.parent().width()-mCSB_dragger.width()
],
scrollTo=[to,to===0 ? 0:(to/d.scrollRatio.x)],
tso=totalScrollOffsets[1],
tsbo=totalScrollBackOffsets[1],
totalScrollOffset=tso>0 ? tso/d.scrollRatio.x:0,
totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.x:0;
break;
case "y":
var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_vertical"),
property="top",
contentPos=mCSB_container[0].offsetTop,
limit=[
mCustomScrollBox.height()-mCSB_container.outerHeight(false),
mCSB_dragger.parent().height()-mCSB_dragger.height()
],
scrollTo=[to,to===0 ? 0:(to/d.scrollRatio.y)],
tso=totalScrollOffsets[0],
tsbo=totalScrollBackOffsets[0],
totalScrollOffset=tso>0 ? tso/d.scrollRatio.y:0,
totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.y:0;
break;
}
if(scrollTo[1]<0||(scrollTo[0]===0&&scrollTo[1]===0)){
scrollTo=[0,0];
}else if(scrollTo[1]>=limit[1]){
scrollTo=[limit[0],limit[1]];
}else{
scrollTo[0]=-scrollTo[0];
}
if(!el[0].mcs){
_mcs();
if(_cb("onInit")){o.callbacks.onInit.call(el[0]);}
}
clearTimeout(mCSB_container[0].onCompleteTimeout);
_tweenTo(mCSB_dragger[0],property,Math.round(scrollTo[1]),dur[1],options.scrollEasing);
if(!d.tweenRunning&&((contentPos===0&&scrollTo[0]>=0)||(contentPos===limit[0]&&scrollTo[0]<=limit[0]))){return;}
_tweenTo(mCSB_container[0],property,Math.round(scrollTo[0]),dur[0],options.scrollEasing,options.overwrite,{
onStart:function(){
if(options.callbacks&&options.onStart&&!d.tweenRunning){
if(_cb("onScrollStart")){_mcs(); o.callbacks.onScrollStart.call(el[0]);}
d.tweenRunning=true;
_onDragClasses(mCSB_dragger);
d.cbOffsets=_cbOffsets();
}},onUpdate:function(){
if(options.callbacks&&options.onUpdate){
if(_cb("whileScrolling")){_mcs(); o.callbacks.whileScrolling.call(el[0]);}}
},onComplete:function(){
if(options.callbacks&&options.onComplete){
if(o.axis==="yx"){clearTimeout(mCSB_container[0].onCompleteTimeout);}
var t=mCSB_container[0].idleTimer||0;
mCSB_container[0].onCompleteTimeout=setTimeout(function(){
if(_cb("onScroll")){_mcs(); o.callbacks.onScroll.call(el[0]);}
if(_cb("onTotalScroll")&&scrollTo[1]>=limit[1]-totalScrollOffset&&d.cbOffsets[0]){_mcs(); o.callbacks.onTotalScroll.call(el[0]);}
if(_cb("onTotalScrollBack")&&scrollTo[1]<=totalScrollBackOffset&&d.cbOffsets[1]){_mcs(); o.callbacks.onTotalScrollBack.call(el[0]);}
d.tweenRunning=false;
mCSB_container[0].idleTimer=0;
_onDragClasses(mCSB_dragger,"hide");
},t);
}}
});
function _cb(cb){
return d&&o.callbacks[cb]&&typeof o.callbacks[cb]==="function";
}
function _cbOffsets(){
return [o.callbacks.alwaysTriggerOffsets||contentPos>=limit[0]+tso,o.callbacks.alwaysTriggerOffsets||contentPos<=-tsbo];
}
function _mcs(){
var cp=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft],
dp=[mCSB_dragger[0].offsetTop,mCSB_dragger[0].offsetLeft],
cl=[mCSB_container.outerHeight(false),mCSB_container.outerWidth(false)],
pl=[mCustomScrollBox.height(),mCustomScrollBox.width()];
el[0].mcs={
content:mCSB_container,
top:cp[0],left:cp[1],draggerTop:dp[0],draggerLeft:dp[1],
topPct:Math.round((100*Math.abs(cp[0]))/(Math.abs(cl[0])-pl[0])),leftPct:Math.round((100*Math.abs(cp[1]))/(Math.abs(cl[1])-pl[1])),
direction:options.dir
};
}},
_tweenTo=function(el,prop,to,duration,easing,overwrite,callbacks){
if(!el._mTween){el._mTween={top:{},left:{}};}
var callbacks=callbacks||{},
onStart=callbacks.onStart||function(){},onUpdate=callbacks.onUpdate||function(){},onComplete=callbacks.onComplete||function(){},
startTime=_getTime(),_delay,progress=0,from=el.offsetTop,elStyle=el.style,_request,tobj=el._mTween[prop];
if(prop==="left"){from=el.offsetLeft;}
var diff=to-from;
tobj.stop=0;
if(overwrite!=="none"){_cancelTween();}
_startTween();
function _step(){
if(tobj.stop){return;}
if(!progress){onStart.call();}
progress=_getTime()-startTime;
_tween();
if(progress>=tobj.time){
tobj.time=(progress>tobj.time) ? progress+_delay-(progress-tobj.time):progress+_delay-1;
if(tobj.time